草庐IT

c++ - 虚表解释

全部标签

c - 跨进程使用 Mutex

操作系统:Windows语言:C/C++设计要求跨进程及其子进程使用互斥变量。如果我在一个进程中创建互斥锁,我必须在另一个进程中打开互斥锁以检查关键部分的可用性。要打开互斥量,我需要知道在父进程中创建的互斥量的名称。假设,如果我将互斥量保留为我的应用程序名称。我可以知道互斥量的名称,因为它是固定的。但是,如果我并行加载我的应用程序的第二个实例,就会出现困惑。以下是更好的主意吗?我有一个想法,将父进程中的互斥量命名为进程ID。所以现在我需要从子进程/大子进程中获取父进程ID以打开互斥锁。我想没有直接的方法可以从大子进程中获取父进程ID。所以我必须在每个创建进程api中传递进程ID(在lp

c - 未解析的外部符号 _sleep 使用 sleep()?

我正在尝试使用sleep()命令。我在Windows上使用C(visualstudio编译器)。命令很简单sleep(5);我有windows.h,time.h,stdio.h。我还需要什么? 最佳答案 你想要Sleep(注意大小写)在WindowsAPI中定义。它可以通过Windows.h访问。 关于c-未解析的外部符号_sleep使用sleep()?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

c - 在没有 C 运行时的情况下与 VS2010 链接时未解析的符号

我正在处理一个有大小限制的项目,所以我不想链接到VisualStudio的C运行时。我使用静态运行时(/MT)和/NODEFAULTLIB:LIBCMT标志来执行此操作。我已经通过检查VS附带的运行时源解决了大部分问题。但是,编译器仍然会生成一些未解析的外部符号:_chkstk:生成用于检查大于4k的函数的堆栈。我可以关闭它或提供虚拟功能吗?__libm_sse2_pow和其他SSE调用:我可以通过关闭SSE代码生成来避免这些,但如果可能的话,我希望拥有它们。这些符号似乎来自Intel库(libmmd.lib?)。为什么这部分仍然是C运行时?_ftol2_sse:将浮点型转换为长整型。

CreateFileMapping 以 "Not enough disk space"错误结束

我在理解如何使用API函数CreateFileMapping(...)时遇到问题。我一直在尝试映射一个小文件,然后反转它的内容。它只有大约1Kb,但我一直收到“内存不足”错误。我已通过调用CreateFile打开了文件,并使用GetFileSize获取了它的大小。然后我调用:CreateFileMapping(fileHandle,NULL,PAGE_READWRITE|SEC_RESERVE,fileSize+1,fileSize+1,NULL);我怀疑问题是将fileSize+1作为dwFileOffsetHigh和dwFileOffsetLow传递,但我很难理解应该做什么我改为传

c++ - 在 C 中,如何在执行另一个功能时不断获取用户输入?

这个问题真的困扰着我如何用C方式做到这一点:在无限循环中显示一系列数字(1、2、3、4、5...等)。如果有人按下特定键(比如退格键),程序应该退出。我的尝试是制作一个循环,然后每次都获取用户输入。intmain(){charuserInput;inti=0;while(true){Sleep(1000);printf("%d",++i);userInput=getch();fflush(stdin);if(userInput=='\b'){break;}}getch();return0;}但这不是问题要找的答案。它确实想在检查用户输入的同时继续打印数字。任何人都可以帮助新手吗?谢谢!

c - MPI基础类(class)

您好,我想学习在C中使用MPI。我在Windows7上使用Codeblocks我运行了这个程序:#include#includevoidmain(intargc,char*argv[]){interr;err=MPI_Init(&argc,&argv);printf("Helloworld!\n");err=MPI_Finalize();}但出于某种原因,我在“mpi.h”处遇到错误。有没有办法添加库? 最佳答案 首先,安装MPI的实现。过去我使用过MPICH,但还有其他可用的实现。我知道另一个是LAM/MPI。查看维基百科页面以获

c# - 请解释 C# 属性是如何工作的?

我学习C#已有一段时间了,并且在我的C#书籍(深入了解C#)中遇到了属性。老实说,我不明白它们的用途,以及我为什么要使用它们。我用谷歌搜索了几次,但仍然无法理解它们。有人可以给我解释一下这个外国概念吗?谢谢,瓦米塔伦 最佳答案 属性提供对数据的受控访问;在最基本的情况下,它可能只是意味着封装一个字段(不推荐使用公共(public)字段),编译器可以让您轻松完成:publicintFoo{get;set;}//thecompilerhandlesthefieldforyou但是,您可以使用该属性来强制执行逻辑或处理副作用:privat

c# - 在 C# 中编码一个 char**

我正在与采用char**(即指向字符串的指针)的代码进行交互:intDoSomething(Whatever*handle,char**error);基本上,它需要一个状态句柄,如果出现问题,它会返回错误代码和可选的错误消息(内存是在外部分配的,并通过第二个函数释放。那部分我已经弄明白了:)).但是,我不确定如何在C#中处理in。我目前拥有的:[DllImport("mydll.dll",CallingConvention=CallingConvention.Cdecl)]privatestaticunsafeexternintDoSomething(IntPtrhandle,byte

c# - C# 中的 C 位域

我需要将C结构转换为使用位字段的C#。typedefstructfoo{unsignedintbar1:1;unsignedintbar2:2;unsignedintbar3:3;unsignedintbar4:4;unsignedintbar5:5;unsignedintbar6:6;unsignedintbar7:7;...unsignedintbar32:32;}foo;有人知道怎么做吗? 最佳答案 如thisanswer中所述和thisMSDNarticle,您可能正在寻找以下内容而不是BitField[Flags]enum

c# - 关于高分辨率性能计数器的解释及其与 .NET 秒表相关的存在?

在静态Stopwatch构造函数中,我们可以看到以下代码,它主要检查是否存在高分辨率性能计数器。staticStopwatch(){if(!SafeNativeMethods.QueryPerformanceFrequency(outFrequency)){IsHighResolution=false;Frequency=0x989680L;tickFrequency=1.0;}else{IsHighResolution=true;tickFrequency=10000000.0;tickFrequency/=(double)Frequency;}}在MSDN上它说QueryPerfo